<template>
  <div class="app-container">
    <!-- 顶部 Header 区域 -->
    <mt-header fixed title="Vue商城">
      <span slot="left" @click="goBack" v-show="flag">
        <mt-button icon="back">返回</mt-button>
      </span>
    </mt-header>
    <!-- 中间的 路由 router-view 区域 -->
    <transition node="out-in"><!-- 加动画效果 -->
      <router-view></router-view>
    </transition>
    <!-- 底部 Tabber 区域 -->
    <nav class="mui-bar mui-bar-tab">
      <router-link class="mui-tab-item-lib" to="/home">
        <span class="mui-icon mui-icon-home"></span>
        <span class="mui-tab-label">首页</span>
      </router-link>
      <router-link class="mui-tab-item-lib" to="/member">
        <span class="mui-icon mui-icon-contact"></span>
        <span class="mui-tab-label">会员</span>
      </router-link>
      <router-link class="mui-tab-item-lib" to="/shopcar">
        <span class="mui-icon mui-icon-extra mui-icon-extra-cart">
          <span class="mui-badge" id="badge">{{ $store.getters.getAllCount }}</span>
        </span>
        <span class="mui-tab-label">购物车</span>
      </router-link>
      <router-link class="mui-tab-item-lib" to="/search">
        <span class="mui-icon mui-icon-search"></span>
        <span class="mui-tab-label">搜索</span>
      </router-link>
    </nav>
  </div>
</template>

<script>
//import { mapGetters } from "vuex";
export default {
  data() {
    return {
      flag: false // 默认显示返回按钮
    };
  },
  methods: {
    goBack() {
      // 点击返回按钮，向后跳转
      this.$router.go(-1);
      console.log(this);
    }
  },
  created() { // 由于页面刷新后 返回 按钮会消失，是因为 flag 默认为 false ，所以需要在页面刚加载的时候进行判断
    /* if (this.$route.path === "/home") {
      this.flag = false;
    } else {
      this.flag = true;
    } */
    this.flag = this.$route.path === "/home"? false : true;
    console.log(this);
  },
  watch: { // 如果不加，就无法显示 返回，因为页面刷新时路由地址变化了
    // 当页面刷新的时候，不会触发 watch 中监听的 路由地址的变化
    "$route.path": function(newVal, oldVal) {
      if (newVal === "/home") {
        this.flag = false;
      } else {
        this.flag = true;
      }
    }
  },
};
</script>

<!-- // 这里写的样式，要符合 scss 语法，并且，样式是 当前组件私有的，不会成为全局的样式，也不会应用给子组件 -->
<style lang="scss" scoped>
.mint-header {
  z-index: 99; // 设置在 PhotoList.vue 中上拉图片不会超过顶部滑动条
}
.app-container {
  padding-top: 40px;
  padding-bottom: 50px;
  // 当有组件切换动效的时候，一瞬间，页面的宽度会变成 正常宽度的 2 倍，此时，需要隐藏超出屏幕宽度的区域
  overflow-x: hidden;
}

.v-enter {
	opacity: 0;
	transform: translateX(100%);
}

.v-leave-to { // 只有这样分开设置才能实现tabber切换时一边往左消失，一边往左切换；若不这样就会导致tabber先往右消失后往左切换。
	opacity: 0;
	transform: translateX(-100%); // 设置即将离开的页面的运动方向。设置负表示直接从右向左消失，而不是当前页从左向右消失才切换；这样看起来才正确
	position: absolute; // 设置绝对定位可以解决在tabber切换时不会出现内容先往下再往右消失
}

.v-enter-active,
.v-leave-active {
	transition:  all 0.5s ease;
}

// 该类名，解决 tabber 点击无法切换的问题（在 tabber 的样式中找到与 mui-tab-item  相关的，并把 mui-tab-item 改为 mui-tab-item-lib）
.mui-bar-tab .mui-tab-item-lib.mui-active {
    color: #007aff;
}

.mui-bar-tab .mui-tab-item-lib {
    display: table-cell;
    overflow: hidden;
    width: 1%;
    height: 50px;
    text-align: center;
    vertical-align: middle;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: #929292;
}

.mui-bar-tab .mui-tab-item-lib .mui-icon {
    top: 3px;
    width: 24px;
    height: 24px;
    padding-top: 0;
    padding-bottom: 0;
}

.mui-bar-tab .mui-tab-item-lib .mui-icon {
    top: 3px;
    width: 24px;
    height: 24px;
    padding-top: 0;
    padding-bottom: 0;
}

.mui-bar-tab .mui-tab-item-lib .mui-icon~.mui-tab-label {
    font-size: 11px;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
}
</style>
